#include <stdio.h>
#include <unistd.h>
#include <sys/types.h>
#include <sys/wait.h>
#include <stdlib.h>

// 1、用进程相关PI函数编程一个程序，使之产生一个进程扇：父进程产生一系列子进程，每个子进程打印自己的PID然后退出。要求父进程最后打印PID。

int main()
{
    int num_children = 3;

    for (int i = 0; i < num_children; i++)
    {
        pid_t pid = fork();

        if (pid == -1)
        {
            perror("fork");
            exit(EXIT_FAILURE);
        }

        if (pid == 0)
        {
            // 子进程
            printf("Child process %d: pid = %d\n", i + 1, getpid());
            exit(EXIT_SUCCESS); // 子进程完成任务后退出
        }
    }

    // 父进程等待所有子进程
    for (int i = 0; i < num_children; i++)
    {
        wait(NULL);
    }

    printf("Parent process: pid = %d\n", getpid());

    return 0;
}